// src/stores/cartStore.js
import { defineStore } from 'pinia'
import { getCartByUserId, deleteProductFromCart, addProductToCart, clearCartByUserId } from '../api/cart'
import { getUserId } from '../stores/userStore'

export const useCartStore = defineStore('cart', {
  state: () => ({
    items: []
  }),

  actions: {
    // 支付
    async pay(orderid) {
      console.log(`沙箱支付中`);
      try {
        const response = await fetch(`http://101.201.67.153:9101/alipay/pay/${orderid}`, {
          method: 'POST'
        });

        if (!response.ok) {
          throw new Error(`Network response was not ok: ${response.statusText}`);
        }

        const formHtml = await response.text();
        console.log('formHtml:', formHtml);

        // 创建临时容器
        const container = document.createElement('div');
        container.innerHTML = formHtml;

        // 提取并处理表单
        const form = container.querySelector('form[name="punchout_form"]');
        if (!form) {
          throw new Error('支付表单未找到');
        }

        // 移除自动提交脚本（避免重复提交）
        const scripts = container.querySelectorAll('script');
        scripts.forEach(script => script.remove());

        // 动态添加表单到页面
        document.body.appendChild(container);
        console.log('正在自动提交表单')

        // 自动触发提交
        form.submit();

        // 提交后清理（根据需要决定是否保留）
        setTimeout(() => {
          document.body.removeChild(container);
        }, 5000);

      } catch (error) {
        console.error('支付流程出错:', error);
        // 这里可以添加用户提示逻辑
        alert('支付失败，请稍后重试');
      }
    },
    //
    
    // 初始化购物车数据
    async initializeCart() {
      const userId = getUserId();
      console.log('User ID in initializeCart:', userId);

      if (!userId) {
        console.error('用户未登录');
        return;
      }

      try {
        const response = await getCartByUserId(userId);
        if (response.data.code === 1 && response.data.data) {
          this.items = response.data.data.map(item => ({
            productid: item.productid,
            title: item.title,
            price: Number(item.price),
            description: item.description,
            stock: item.stock,
            categoryid: item.categoryid,
            productimg: item.productimg,
            adimg: item.adimg,
            onsale: item.onsale,
            quantity: item.quantity
          }));
          console.log('购物车初始化完成:', this.items);
        } else {
          console.error('获取购物车数据失败:', response.data.msg);
        }
      } catch (error) {
        console.error('Error fetching cart data:', error);
      }
    },

    // 添加商品到购物车
    async addToCart(product) {
      console.log('addToCart 方法被调用');
      console.log('传递的 product 对象:', product);

      if (!product || !product.id) {
        console.error('product 对象或 product.id 不存在');
        return;
      }

      const existingItem = this.items.find(item => item.productid === product.id);

      if (existingItem) {
        existingItem.quantity += 1;
        console.log('商品数量增加:', existingItem);
      } else {
        this.items.push({
          productid: product.id,
          title: product.text,
          price: Number(product.price),
          description: product.description,
          stock: product.stock,
          categoryid: product.categoryid,
          productimg: product.src,
          adimg: product.adimg,
          onsale: product.onsale,
          quantity: 1
        });
        console.log('商品添加到购物车:', this.items);
      }

      // 获取用户ID
      const userId = getUserId();

      if (!userId) {
        console.error('用户未登录');
        return;
      }

      // 调用 API 添加商品到购物车
      try {
        console.log('开始发送请求添加购物车');
        const cart = {
          userid: userId,
          productid: product.id,
          quantity: 1
        };
        console.log('cart 对象:', cart);
        await addProductToCart(cart);
        console.log('商品成功添加到购物车');
      } catch (error) {
        console.error('Error adding product to cart:', error);
        // 处理错误，例如回滚本地状态
        if (existingItem) {
          existingItem.quantity -= 1;
        } else {
          this.items.pop();
        }
      }
    },

    // 从购物车移除商品
    async removeFromCart(productId) {
      const index = this.items.findIndex(item => item.productid === productId);
      if (index > -1) {
        const item = this.items[index];
        this.items.splice(index, 1);

        // 获取用户ID
        const userId = getUserId();

        if (!userId) {
          console.error('用户未登录');
          return;
        }

        // 调用 API 删除商品从购物车
        try {
          await deleteProductFromCart(userId, productId);
        } catch (error) {
          console.error('Error removing product from cart:', error);
          // 处理错误，例如回滚本地状态
          this.items.splice(index, 0, item);
        }
      }
    },

    // 更新购物车中商品的数量
    updateQuantity(productId, quantity) {
      const item = this.items.find(item => item.productid === productId);
      if (item) {
        item.quantity = quantity;
      }
    },

    // 清空购物车
    async clearCart() {
      const userId = getUserId();

      if (!userId) {
        console.error('用户未登录');
        return;
      }
      try {
        // 调用 API 清空购物车
        const response = await clearCartByUserId(userId);
        if (response.data.code === 1) {
          this.items = [];
          console.log('购物车已清空');
        } else {
          console.error('清空购物车失败:', response.data.msg);
        }
      } catch (error) {
        console.error('Error clearing cart:', error);
        // 处理错误，例如恢复本地状态
        this.items = []; // 如果需要，可以选择保留本地状态
      }
    }
  },

  getters: {
    // 获取购物车中商品的总数
    totalItems: (state) => {
      return state.items.reduce((total, item) => total + item.quantity, 0);
    },
    // 获取购物车中商品的总价
    totalPrice: (state) => {
      return state.items.reduce((total, item) => total + Number(item.price) * item.quantity, 0);
    }
  },

  persist: true
});